扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
在本页阅读全文(共6页)
观念上的错误:32bit寻址
32bit操作系统,32bit处理器,有着32bit寻址能力,可以访问2^32 = 4G物理地址,于是拥有识别4GB内存的能力,这似乎是完全顺理成章的事情。然而其中有一个关键,什么是物理地址?物理地址就是物理内存的地址?非也。物理地址是指处理器和系统内存之间所用到地址,我们可以简单理解成是CPU“极方便访问的地址”。这个地址并非物理内存独享,而是被分成了很多部分,物理内存地址也只能够占用这4GB地址中的一部分。
认真看看上面这个P45芯片组的系统地址区域图。图中的方块代表的是不同区域的“地址”,这些地址囊括了一台电脑中所有能和操作系统以及芯片组关联的设备地址,而不仅仅是“物理内存地址”。同样的,那个4G的红线代表的是第4G个Byte的地址,并不是4GB物理内存的分界线。由于P45芯片组是一款支持36bit寻址的产品,即可以支持64GB地址,因此从左边的“系统视角”来看各种设备所需地址轻松自如的分布在整个地址表上。然而从右侧的“内存控制器视角”来看结果就不相同了。因为32bitCPU只能访问到4GB的地址,因此系统运转所必须的所有设备地址都必须同时存在于这4GB地址内。很显然,让一个系统正常运行并不仅仅包括内存,还要包括各种I/O设备等。在4GB的寻址范围内,物理内存实际上只占据了一块,那个被称为Main Memory Address Range的区域(图中绿色框)。那么其他地址主要被谁占据了呢?
上面的图中展示了00000000h至FFFFFFFFh共4GB地址的详细分配(上图中方块大小于占用地址多少无关),除去物理内存(Main Memory)之外,多数部分通常只会占据几MB最多十几MB的地址空间,其中唯一的一个地址大户是PCI Memory Address Range(PCI Memory Range)。
有一点我们必须再次明确,到目前为止我们都在讲“地址”,无论是4GB或者64GB,这里并不是在讲述任何与存储设备空间相关联的NAND gate或者磁颗粒数量(比如内存、硬盘空间),而是由16进制计数的物理地址。32bit寻址由CPU决定,因此即使你安装不到4GB的物理内存,系统仍然会拥有4GB的系统内存地址。上面的图很直观的说明了这一点,尽管只有2GB的物理内存,但系统依然分配出了00000000h至FFFFFFFFh共2^32bit = 4GB的地址。而且我们还可以发现从80000000h至FFFFFFFhF这整整2GB的地址都分配给了PCI bus,也就是前面所讲到的PCI Memory Address Range。
濠碘€冲€归悘澶愬箖閵娾晜濮滈悽顖涚摃閹烩晠宕氶崶鈺傜暠闁诡垰鍘栫花锛勬喆椤ゅ弧濡澘妫楅悡娆撳嫉閳ь剟寮0渚€鐛撻柛婵呮缁楀矂骞庨埀顒勫嫉椤栨瑤绻嗛柟顓у灲缁辨繈鏌囬敐鍕杽閻犱降鍨藉Σ鍕嚊閹跺鈧﹦绱旈幋鐐参楅柡鍫灦閸嬫牗绂掔捄铏规闁哄嫷鍨遍崑宥夋儍閸曨剚浠樺ù锝嗗▕閳ь剚鏌ㄧ欢鐐寸▕鐎b晝顏遍柕鍡嫹